#ifndef REEDSOLOMONENCODER_H
#define REEDSOLOMONENCODER_H

#include <zxing/common/reedsolomon/GF256.h>
#include <zxing/common/reedsolomon/GF256Poly.h>
#include <list>

namespace zxing {
using namespace std;

class ReedSolomonEncoder
{
private:
    GF256 &field;
    vector<Ref<GF256Poly> > cachedGenerators;

    Ref<GF256Poly> buildGenerator(int degree);

public:
    ReedSolomonEncoder(GF256 &field);
    void encode(ArrayRef<int> toEncode, int ecBytes);
};

}

#endif // REEDSOLOMONENCODER_H
